home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 264_01 / nro.h < prev    next >
Text File  |  1980-01-01  |  6KB  |  185 lines

  1. /*
  2.  *    Parameter file for NRO word processor
  3.  *
  4.  *    Stephen L. Browning
  5.  *    5723 North Parker Avenue
  6.  *    Indianapolis, Indiana 46220
  7.  *
  8.  *    adapted to ms-dos 10/17/86 pjv
  9.  *
  10.  */
  11.  
  12. #ifndef min
  13. #define min(a,b) (a < b ? a : b)
  14. #endif
  15. #ifndef max
  16. #define max(a,b) (a > b ? a : b)
  17. #endif
  18. #ifndef OK
  19. #define OK 0
  20. #endif
  21. #ifndef TRUE
  22. #define TRUE (1)
  23. #endif
  24. #ifndef FALSE
  25. #define FALSE (0)
  26. #endif
  27.  
  28. #define MACRO     0    /* macro definition */
  29. #define BP     1    /* begin page    */
  30. #define BR     2    /* break    */
  31. #define CE     3    /* center    */
  32. #define FI     4    /* fill        */
  33. #define FO     5    /* footer    */
  34. #define HE     6    /* header    */
  35. #define IN     7    /* indent    */
  36. #define LS     8    /* line spacing    */
  37. #define NF     9    /* no fill    */
  38. #define PL    10    /* page lenght    */
  39. #define RM    11    /* right margin    */
  40. #define SP    12    /* line space    */
  41. #define TI    13    /* temp indent    */
  42. #define UL    14    /* underline    */
  43. #define JU    15    /* justify    */
  44. #define NJ    16    /* no justify    */
  45. #define M1    17    /* top margin    */
  46. #define M2    18    /* second top margin    */
  47. #define M3    19    /* first bottom margin    */
  48. #define M4    20    /* bottom-most margin    */
  49. #define BS    21    /* allow/disallow '\b' in output */
  50. #define NE    22    /* need n lines */
  51. #define PC    23    /* page number character */
  52. #define CC    24    /* control character    */
  53. #define PO    25    /* page offset    */
  54. #define BO    26    /* bold face    */
  55. #define EH    27    /* header for even numbered pages    */
  56. #define OH    28    /* header for odd numbered pages    */
  57. #define EF    29    /* footer for even numbered pages    */
  58. #define OF    30    /* footer for odd numbered pages    */
  59. #define SO    31    /* source file    */
  60. #define CU    32    /* continuous underline    */
  61. #define DE    33    /* define macro    */
  62. #define EN    34    /* end macro definition    */
  63. #define NR    35    /* set number register    */
  64.  
  65. #define UNKNOWN    -1
  66.  
  67. /*
  68.  *    MAXLINE is set to a value slightly larger
  69.  *    than twice the longest expected input line.
  70.  *    Because of the way underlining is handled, the
  71.  *    input line which is to be underlined, can almost
  72.  *    triple in length.  Unlike normal underlining and
  73.  *    boldfacing, continuous underlining affects all
  74.  *    characters in the buffer, and represents the
  75.  *    worst case condition.  If the distance between
  76.  *    the left margin and the right margin is greater
  77.  *    than about 65 characters, and continuous underlining
  78.  *    is in effect, there is a high probability of buffer
  79.  *    overflow.
  80.  */
  81.  
  82. #define MAXLINE    200
  83. #define PAGELEN     66
  84. #define PAGEWIDTH 80
  85. #define HUGE    256
  86. #define LEFT    0        /* indecies into header margin limit arrays */
  87. #define RIGHT    1
  88. #define NFILES    4        /* nesting depth for input files */
  89.  
  90. /*
  91.  *    The following parameters may be defined elsewhere
  92.  */
  93.  
  94. #define YES    1
  95. #define NO    0
  96. #define ERR    -1
  97.  
  98. /*
  99.  *    The parameter values selected for macro definitions
  100.  *    are somewhat arbitrary.  MACBUF is the storage area
  101.  *    for both macro names and definitions.  Since macro
  102.  *    processing is handled by pushing back the expansion
  103.  *    into the input buffer, the longest possible expansion
  104.  *    would be MAXLINE characters.  Allowing for argument
  105.  *    expansion, MXMLEN was chosen slightly less than MAXLINE.
  106.  *    It is assumed that most macro definitions will not
  107.  *    exceed 20 characters, hence MXMDEF of 100.
  108.  */
  109.  
  110. #define MXMDEF    100        /* maximum no. of macro definitions */
  111. #define MACBUF    2000        /* macro definition buffer */
  112. #define MXMLEN    150        /* maximum length of each macro definition */
  113. #define MNLEN    10        /* maximum length of macro name */
  114.  
  115. struct macros {
  116.     char *mnames[MXMDEF];    /* table of pointers to macro names */
  117.     int lastp;        /* index to last mname    */
  118.     char *emb;        /* next char avail in macro defn buffer */
  119.     char mb[MACBUF];    /* table of macro definitions */
  120.     char *ppb;        /* pointer into push back buffer */
  121.     char pbb[MAXLINE];    /* push back buffer */
  122. };
  123.  
  124.  
  125. /* control parameters for nro */
  126.  
  127. struct docctl {
  128.     int fill;    /* fill if YES, init = YES        */
  129.     int lsval;    /* current line spacing, init = 1    */
  130.     int inval;    /* current indent, >= 0, init = 0    */
  131.     int rmval;    /* current right margin, init = 60    */
  132.     int tival;    /* current temp indent, init = 0    */
  133.     int ceval;    /* number of lines to center, init = 0    */
  134.     int ulval;    /* number of lines to underline, init = 0 */
  135.     int cuval;    /* no. lines to continuously underline, init = 0 */
  136.     int juval;    /* justify if YES, init = YES        */
  137.     int boval;    /* number of lines to bold face, init = 0 */
  138.     int bsflg;    /* can output contain '\b', init = FALSE */
  139.     char pgchr;    /* page number character, init = '#'    */
  140.     char cmdchr;    /* command character, init = '.'    */
  141.     int prflg;    /* print on or off, init = TRUE        */
  142.     int sprdir;    /* direction for spread(), init = 0    */
  143.     int flevel;    /* nesting depth for source cmd, init = 0 */
  144.     int nr[26];    /* number registers    */
  145. };
  146.  
  147.  
  148. /* output buffer control parameters */
  149.  
  150. struct cout {
  151.     int outp;    /* next avail char position in outbuf, init = 0 */
  152.     int outw;    /* width of text currently in buffer    */
  153.     int outwds;    /* number of words in buffer, init = 0    */
  154.     int lpr;    /* output to printer, init = FALSE    */
  155.     char outbuf[MAXLINE];    /* output of filled text    */
  156. };
  157.  
  158. /* page control parameters for nro */
  159.  
  160. struct page {
  161.     int curpag;    /* current output page number, init =0    */
  162.     int newpag;    /* next output page number, init = 1    */
  163.     int lineno;    /* next line to be printed, init = 0    */
  164.     int plval;    /* page length in lines, init = 66    */
  165.     int m1val;    /* margin before and including header    */
  166.     int m2val;    /* margin after header            */
  167.     int m3val;    /* margin after last text line        */
  168.     int m4val;    /* bottom margin, including footer    */
  169.     int bottom;    /* last live line on page
  170.                     = plval - m3val - m4val    */
  171.     int offset;    /* page offset from left, init = 0    */
  172.     int frstpg;    /* first page to print, init = 0    */
  173.     int lastpg;    /* last page to print, init = 30000    */
  174.     int ehlim[2];    /* left/right margins for headers/footers    */
  175.     int ohlim[2];    /* init = 0 and PAGEWIDTH            */
  176.     int eflim[2];
  177.     int oflim[2];
  178.     char ehead[MAXLINE];    /* top of page title, init = '\n'    */
  179.     char ohead[MAXLINE];
  180.     char efoot[MAXLINE];    /* bottom of page title, init = '\n'    */
  181.     char ofoot[MAXLINE];
  182. };
  183.  
  184. char *getmac();
  185.